「AWS CDK intro Workshop」の紹介
はじめに
AWS CDK v2が出てから触っていなかったことと、(v1を含め)AWS CDKをしばらく使っていなかったので、復習のためにチュートリアル的なものを探していたところ、公式のワークショップがありました。
このワークショップをやってみたのですが、(IDEなどの)入力補完の威力を実感しつつ、コマンドを一つずつ実行してAWSにリソースを作っていく過程を体験できる構成となっており、AWS CDKを使ったことがない・もしくは使用経験が浅い方などに是非やってみて欲しいと感じました。
以下、このワークショップの目次や概要などについて紹介したいと思います。以下をご覧いただき、興味を持たれた場合は一度ワークショップをやってみることをお勧め致します。
なお、今回TypeScriptでワークショップを行いました。なのでTypeScript以外の部分については割愛させて頂きます。
ワークショップの目次
まずワークショップの目次についてです。事前準備とTypeScriptでのワークショップに限定して目次を抜粋してみました。
- Prerequisites
- TypeScript Workshop
- New Project
- cdk init
- npm run watch
- Project structure
- cdk synth
- cdk deploy
- Hello, CDK!
- Cleanup sample
- Hello Lambda
- CDK Watch
- API Gateway
- Writing constructs
- Define the HitCounter API
- Hit counter handler
- Define resources
- Use the hit counter
- CloudWatch Logs
- Granting permissions
- Test the hit counter
- Using construct libraries
- Learning about the Table Viewer construct
- Installing the library
- Add the table viewer to your app
- Exposing our hit counter table
- Deploying our app
- Extra credit
- Clean up
- Advanced Topics
- Testing Constructs
- Assertion Tests
- Validation Tests
- CDK Pipelines
- Getting Started with Pipelines
- Create Repository
- Create New Pipeline
- Add Application to Pipeline
- Polish Pipeline
- Cleanup
- Testing Constructs
- New Project
上から眺めてみると、事前準備(Prerequisites)から始まり、プロジェクトの作成、Hello Worldにあたる「Hello, CDK!」、リソース構成を定義する「Writing constructs」・・・、最後に作成したリソースを消去する「Clean up」、という流れで進めることができるようになっています。「Clean up」までで一通りのリソース作成〜削除まで網羅されており、「Advanced Topics」にてテストの記述、デプロイパイプラインの構築について取り上げられています。
次に自分がやってみたところの概要です。
事前準備(Prerequisites)の概要
「Prerequisites」のページには必要なものが記載されています。それを踏まえつつ、私が準備 & インストールしたものを以下に挙げます。
- AWS CLI
- AWS Account and User
- Node.js
- IDE
- AWS CDK Toolkit
- (著者追加)curl
AWS CLI・Node.jsについては、私の場合はdocker-composeを用意して、これらがインストール済みのコンテナを使いました。コンテナを作るためのdocker-compose.yml・Dockerfileについては以下の記事を参照ください。 docker-composeとlocalstackを使ってローカルでAWS SDK for JavaScript V3を動かしてみる
IDEについては、入力補完を使いつつ、コピー&ペーストせずに手入力することを進める箇所があることもあり、何らかのIDEや補完機能があるエディタを使うことを私も推奨します。中でもVisual Studio Codeが「recommended」となっており、私もVisual Studio Codeを使用しました。他には AWS Cloud9、WebStorm、Eclipseなどが挙げられています。
curlについては「Prerequisites」には挙げられていませんが、進めるにつれてcurlでAPI GatewayのURLを叩くことがあります。Windowsマシンなどでインストールされていない場合は準備しておくことをお勧めします。
他、TypeScript以外で実装するなら
- Python
- .NET
- Java
のいずれかをインストールする必要があります。
目次の項目別概要
AWS CDK v2のプロジェクトを実際に作成し、コードを記述してリソースを構築〜破棄してみるワークショップとなります。本文でも
In this workshop, we highly recommended to type CDK code instead of copying & pasting
A few words about copying & pasting in this workshop
とありますが、AWS CDKの使い勝手を体験する上でも、実際にコードを打ち込んで「$ cdk deploy」コマンドなどでデプロイしてみることをお勧めします。
以下、目次の項目別の概要です。
New Project
AWS CDKでプロジェクトを初めて作成してみます。「$ cdk init」コマンドでプロジェクトを作成し、SQSのリソースを定義し、実行してリソースをデプロイしてみます。また「$ cdk synth」などデプロイ以外にもよく使うコマンドを実際に実行してみます。
Hello, CDK!
API Gateway、Lambdaのサーバレス構成のAPIを定義し、リソースをデプロイしてみます。実際にAPIとしてデプロイされ、「$ curl」コマンドでAPIを叩いてみます。
Writing constructs
この辺りからデータを保持するDynamoDBやLambdaでの処理が出てきて、アプリ実装らしくなってきます。リソースを定義してデプロイする以外にも、ログの確認やDynamoDBへの権限追加など、実案件の作業でもありそうなことを実際にやってみます。
Using construct libraries
「cdk-dynamo-table-viewer」というライブラリを追加してアプリを改修し、DynamoDBの中身をブラウザから見れるようにします。なお本文中、このライブラリについては本番では使わないようにとの警告があることに注意してください。
Clean up
作成したリソースを削除します。ここまででAWS CDKのプロジェクト作成 〜 アプリとリソースの実装 〜 デプロイ 〜 削除まで一通りやってみます。
Advanced Topic
ここからはオプション的な扱いの追加トピックとなります。「Clean up」までに作成したAWS CDKのコードに対して「Testing Constructs」にてテストを追加することなどをやってみます。
まとめ
ワークショップの目次を取り上げ、目次ごとの概要を簡単に説明してみました。最初にも書きましたが、実際にコードを書いてコマンドでリソースをデプロイすることでAWS CDKについて体験できる、素晴らしいワークショップだと思いました。